/**
 * Created by FeLiX on 2016/9/18.
 */

var
  gulp = require('gulp'),
  ts = require('gulp-typescript'),
  sourcemaps = require('gulp-sourcemaps'),
  del = require('del');

//*****************************-- 配置 --*****************************//

var
  src = {
    ts: './src/script/**/*.ts',
    js: './src/script/**/*.js'
  },
  dest = {
    ts: './static/script',
    js: './static/script'
  },
  config = {
    map: true
  };

//*****************************-- 构建 --*****************************//

//构建 js
gulp.task('B:js', function () {
  var jsFile = gulp.src(src.js);
  config.map && jsFile.pipe(sourcemaps.init());
  config.map && jsFile.pipe(sourcemaps.write());
  return jsFile.pipe(gulp.dest(dest.js));
});

//构建 ts
gulp.task('B:ts', function () {
  var tsFile, jsFile;
  tsFile = gulp.src(src.ts);
  config.map && tsFile.pipe(sourcemaps.init());
  jsFile = tsFile.pipe(ts({
    module: 'amd',
    target: 'es5'
  }));
  config.map && jsFile.pipe(sourcemaps.write());
  return jsFile.js.pipe(gulp.dest(dest.ts));
});

//清除 script
gulp.task('C:js', function (cb) {
  del(dest.ts + '/**/*.js', cb);
});

//*****************************-- 整合 --*****************************//

//构建所有
gulp.task('B:all', ['B:js', 'B:ts']);
//清除所有
gulp.task('C:all', ['C:js']);

//*****************************-- 监听 --*****************************//

//监听所有
gulp.task('W:all', function () {
  gulp.watch([src.ts], ['B:ts']);
  gulp.watch([src.js], ['B:js']);
});